[Git] 最初のコミットを含めてrebase -iする方法
こんにちは。サービスグループの武田です。
結論だけ知りたい方!--root
だけ覚えてください!
$ git rebase -i --root
Gitを使っているとコミットの分割や統合が簡単に行えます。開発時は雑にコミットしておいたものを、PR前に整理するという方も多いのではないでしょうか。
そんな折に大活躍するコマンドがrebase -i
ですね。これを利用することで、歴史改変が簡単に行えます。そういえばVivy -Fluorite Eye’s Song-がおもしろいですね。見ていない方はぜひ。アマプラでも見れます。
さてそんなrebase -i
なのですが、最初のコミットを対象にする場合、追加のオプションが必要となります。簡単に確認してみましょう。
$ mkdir git_rebase_test && cd $_ $ git init $ touch README.md $ git add . $ git commit -m 'init commit' $ echo '# git rebase' > README.md $ git add . $ git commit -m '2nd commit'
2つのコミットを対象にrebaseしてみます。
$ git rebase -i @~2 fatal: invalid upstream '@~2'
不正な指定ということでエラーとなってしまいました。ちなみにgit rebase -i @~1
だと次のようになり、意図したものにはなりません。
pick 3823264 2nd commit # Rebase b194806..3823264 onto b194806 (1 command)
最初のコミットからrebaseするには、コミットハッシュなどの指定ではなく--root
オプションを指定します。試してみます。
$ git rebase -i --root
次のようなエディット画面が立ち上がります。
pick b194806 init commit pick 3823264 2nd commit # Rebase 3823264 onto ec23e56 (2 commands)
先ほどと異なり最初のコミットも含まれていますね。あとはいかようにもしてください。
さいごに
今期は東京リベンジャーズもタイムリープものですね。そちらもおもしろいですよ。